package py.com.alfa.escriba.web.services;

import java.util.List;

import py.com.alfa.escriba.exception.ServiceException;
import py.com.alfa.escriba.persistence.dto.EscribanosDTO;
import py.com.alfa.escriba.persistence.dto.IntercepcionLongDTO;
import py.com.alfa.escriba.persistence.dto.PersonaInfoParaControlDTO;
import py.com.alfa.escriba.persistence.dto.PersonasdocumentosDTO;
import py.com.alfa.escriba.persistence.dto.admin.ClienteDTO;
import py.com.alfa.escriba.persistence.dto.admin.ClienteInfoDTO;
import py.com.alfa.escriba.persistence.dto.admin.DomicilioDTO;
import py.com.alfa.escriba.persistence.dto.admin.PersonaDTO;
import py.com.alfa.escriba.persistence.dto.admin.PersonaInfoDTO;
import py.com.alfa.escriba.persistence.dto.admin.TelefonoDTO;
import py.com.alfa.escriba.persistence.dto.query.PersonaQueryDTO;
import py.com.alfa.escriba.web.interceptor.InvocationContext;


public interface AdminService {
	
	public PersonaDTO obtenerPersona(Long id) throws ServiceException;
	public PersonaDTO crearPersona(PersonaDTO dto, InvocationContext ic) throws ServiceException;
	public PersonaInfoDTO obtenerPersonaInfo(Long id) throws ServiceException;
	public List<PersonaDTO> obtenerPersonas(InvocationContext ic) throws ServiceException;
	public List<PersonaInfoDTO> buscarPersonas(PersonaDTO dto,InvocationContext ic) throws ServiceException;
	public PersonaDTO actualizarPersona(PersonaDTO dto, InvocationContext ic) throws ServiceException;

//	public List<ClienteDTO> obtenerClientes() throws ServiceException;
//	public ClienteInfoDTO   obtenerCliente(Long id) throws ServiceException;
//	public ClienteDTO       actualizarCliente(ClienteDTO dto) throws ServiceException;
//	public void             eliminarCliente(Long id) throws ServiceException;
//	public ClienteDTO       crearCliente(ClienteDTO dto) throws ServiceException;
//	
//	public void             eliminarEmpleoCliente(IntercepcionLongDTO dto) throws ServiceException;
//	public void             crearEmpleoCliente(IntercepcionLongDTO dto) throws ServiceException;

	public void              actualizarTelefono(TelefonoDTO dto) throws ServiceException;
	public void              eliminarTelefono(TelefonoDTO dto) throws ServiceException;
	public TelefonoDTO       crearTelefono(TelefonoDTO dto) throws ServiceException;

	public DomicilioDTO      actualizarDomicilio(DomicilioDTO dto) throws ServiceException;
	public void              eliminarDomicilio(Long id) throws ServiceException;
	public DomicilioDTO      crearDomicilio(DomicilioDTO dto) throws ServiceException;
	
//	public ClienteInfoDTO    crearClienteInfo(ClienteInfoDTO dto) throws ServiceException;
//	public void              actualizarClienteInfo(ClienteInfoDTO dto) throws ServiceException;
	
	public PersonaInfoDTO crearPersonaInfo(PersonaInfoDTO dto, InvocationContext ic) throws ServiceException;
	public void actualizarPersonaInfo(PersonaInfoDTO dto, InvocationContext ic) throws ServiceException;
	public void eliminarPersonaInfo(Long id) throws ServiceException;
	public PersonasdocumentosDTO crearDocumento(PersonasdocumentosDTO dto) throws ServiceException;
	public PersonasdocumentosDTO actualizarDocumento(PersonasdocumentosDTO dto) throws ServiceException;
	public PersonaInfoParaControlDTO getPersonaByPaisDocumento(PersonaQueryDTO values) throws ServiceException;
	
	public EscribanosDTO crearEscribano(EscribanosDTO dto, InvocationContext ic) throws ServiceException;
	public List<EscribanosDTO> obtenerEscribanos() throws ServiceException;
	public EscribanosDTO obtenerEscribano(Long id) throws ServiceException;
}
